package gui;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyVetoException;

import javax.swing.JDesktopPane;
import javax.swing.JLayeredPane;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;

import bd.Servicios;

/**
 * This code was edited or generated using CloudGarden's Jigloo SWT/Swing GUI
 * Builder, which is free for non-commercial use. If Jigloo is being used
 * commercially (ie, by a corporation, company or business for any purpose
 * whatever) then you should purchase a license for each developer using Jigloo.
 * Please visit www.cloudgarden.com for details. Use of Jigloo implies
 * acceptance of these licensing terms. A COMMERCIAL LICENSE HAS NOT BEEN
 * PURCHASED FOR THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED LEGALLY FOR
 * ANY CORPORATE OR COMMERCIAL PURPOSE.
 */
public class VentanaPrincipal extends javax.swing.JFrame {

	private JMenuBar Menu;
	private JMenuItem cajeroAutomatico;
	private VentanaIngresarTarjeta ventanaIngresarTarjeta;
	private VentanaCajero ventanaCajero;
	private JMenuItem Ingresar;
	private JMenu jMenu1;
	private VentanaConsulta ventanaConsulta;
	private JMenuItem Consultas;
	private VentanaPassword ventanaPassword;
	private VentanaPagoCuotas ventanaPagoCuotas;
	private VentanaLogin ventanaLogin;
	private JDesktopPane PanelPrincipal;
	private VentanaExtraer ventanaExtraer1;
	private JMenuItem extraer;
	private VentanaTransferencia ventanaTransferencia1;
	private JMenuItem menuTransferencia;
	private JMenuItem desconectar;
	private JMenuItem morosos;
	private JMenuItem pagoCuotas;
	private JMenuItem desloguear;
	private JMenuItem ingresarEmp;
	private JMenuItem salir;
	private JMenuItem crearPrestamo;
	private JMenu adminPrestamo;
	private JMenuItem Conectar;
	private JMenu jMenu2;
	private Servicios serv;
	private VentanaPrestamo ventanaPrestamo;
	private VentanaMorosos ventanaMorosos;

	/**
	 * Auto-generated main method to display this JFrame
	 */
	public static void main(String[] args) {
		try {
			javax.swing.UIManager.setLookAndFeel(javax.swing.UIManager
					.getSystemLookAndFeelClassName());
		} catch (Exception e) {
			e.printStackTrace();
		}

		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				VentanaPrincipal inst = new VentanaPrincipal();
				inst.setLocationRelativeTo(null);
				inst.setVisible(true);
			}
		});
	}

	public VentanaPrincipal() {
		super();
		serv = Servicios.getServicios();
		initGUI();
	}

	private void initGUI() {
		try {
			this.setTitle("Proyecto Bases de Datos - Banco");
			this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
			{
				PanelPrincipal = new JDesktopPane();
				getContentPane().add(PanelPrincipal, BorderLayout.CENTER);
				{
					ventanaExtraer1 = new VentanaExtraer();
					PanelPrincipal.add(ventanaExtraer1,
							JLayeredPane.DEFAULT_LAYER);
					ventanaExtraer1.setBounds(8, 22, 858, 477);
					ventanaExtraer1.setVisible(false);
				}
				{
					ventanaConsulta = new VentanaConsulta();
					PanelPrincipal.add(ventanaConsulta,
							JLayeredPane.DEFAULT_LAYER);
					ventanaConsulta.setBounds(1, 24, 400, 300);
					ventanaConsulta.setVisible(false);
				}
				{
					ventanaPrestamo = new VentanaPrestamo();
					PanelPrincipal.add(ventanaPrestamo,
							JLayeredPane.DEFAULT_LAYER);
					ventanaPrestamo.setBounds(1, 24, 400, 300);
					ventanaPrestamo.setVisible(false);
				}
				{
					ventanaPagoCuotas = new VentanaPagoCuotas();
					PanelPrincipal.add(ventanaPagoCuotas,
							JLayeredPane.DEFAULT_LAYER);
					ventanaPagoCuotas.setBounds(1, 24, 400, 300);
					ventanaPagoCuotas.setVisible(false);
				}
				{
					ventanaMorosos = new VentanaMorosos();
					PanelPrincipal.add(ventanaMorosos,
							JLayeredPane.DEFAULT_LAYER);
					ventanaMorosos.setBounds(1, 24, 400, 300);
					ventanaMorosos.setVisible(false);
				}
				{
					ventanaPassword = new VentanaPassword();
					ventanaPassword.getContentPane().setLayout(null);
					ventanaPassword.setVisible(false);
					PanelPrincipal.add(ventanaPassword,
							JLayeredPane.DEFAULT_LAYER);
					ventanaPassword.setBounds(80, -39, 668, 270);
				}
				{
					ventanaLogin = new VentanaLogin();
					ventanaLogin.getContentPane().setLayout(null);
					ventanaLogin.setVisible(false);
					PanelPrincipal
							.add(ventanaLogin, JLayeredPane.DEFAULT_LAYER);
					ventanaLogin.setBounds(80, -39, 668, 270);
				}
				{
					ventanaCajero = new VentanaCajero();
					ventanaCajero.setVisible(false);
					PanelPrincipal.add(ventanaCajero,
							JLayeredPane.DEFAULT_LAYER);

				}
				{
					ventanaIngresarTarjeta = new VentanaIngresarTarjeta();
					PanelPrincipal.add(ventanaIngresarTarjeta,
							JLayeredPane.DEFAULT_LAYER);
					ventanaIngresarTarjeta.setVisible(false);
				}
				{
					ventanaTransferencia1 = new VentanaTransferencia();
					ventanaTransferencia1.setVisible(false);
					PanelPrincipal.add(ventanaTransferencia1,
							JLayeredPane.DEFAULT_LAYER);
				}
			}
			{
				Menu = new JMenuBar();
				setJMenuBar(Menu);
				{
					jMenu2 = new JMenu();
					Menu.add(jMenu2);
					jMenu2.setText("Inicio");
					{
						Conectar = new JMenuItem();
						jMenu2.add(Conectar);
						Conectar.setText("Nueva Conexion");
						Conectar.addActionListener(new ActionListener() {
							public void actionPerformed(ActionEvent evt) {
								ConectarActionPerformed(evt);
							}
						});
					}
					{
						Consultas = new JMenuItem();
						jMenu2.add(Consultas);
						Consultas.setText("Consultas");
						Consultas.setEnabled(false);
						Consultas.addActionListener(new ActionListener() {
							public void actionPerformed(ActionEvent evt) {
								ConsultasActionPerformed(evt);
							}
						});
					}
					{
						desconectar = new JMenuItem();
						jMenu2.add(desconectar);
						desconectar.setEnabled(false);
						desconectar.setText("Desconectar");
						desconectar.addActionListener(new ActionListener() {
							public void actionPerformed(ActionEvent evt) {
								desconectarActionPerformed(evt);
							}
						});
					}
				}
				{
					jMenu1 = new JMenu();
					Menu.add(jMenu1);
					jMenu1.setText("Cajero Automatico");
					{
						Ingresar = new JMenuItem();
						jMenu1.add(Ingresar);
						Ingresar.setText("Ingresar al Sistema");
						Ingresar.setEnabled(true);
						Ingresar.addActionListener(new ActionListener() {
							public void actionPerformed(ActionEvent evt) {
								IngresarActionPerformed(evt);
							}
						});
					}
					{
						cajeroAutomatico = new JMenuItem();
						jMenu1.add(cajeroAutomatico);
						cajeroAutomatico.setText("Cajero Automatico");
						cajeroAutomatico.setEnabled(false);
						cajeroAutomatico.setAutoscrolls(true);
						cajeroAutomatico
								.addActionListener(new ActionListener() {
									public void actionPerformed(ActionEvent evt) {
										cajeroAutomaticoActionPerformed(evt);
									}
								});
						cajeroAutomatico.setEnabled(false);
					}
					{
						menuTransferencia = new JMenuItem();
						jMenu1.add(menuTransferencia);
						menuTransferencia.setText("Transferencia");
						menuTransferencia.setEnabled(false);
						menuTransferencia
								.addActionListener(new ActionListener() {
									public void actionPerformed(ActionEvent evt) {
										menuTransferenciaActionPerformed(evt);
									}
								});
					}
					{
						extraer = new JMenuItem();
						jMenu1.add(extraer);
						extraer.setText("Extraccion");
						extraer.setEnabled(false);
						extraer.addActionListener(new ActionListener() {
							public void actionPerformed(ActionEvent evt) {
								extraerActionPerformed(evt);
							}
						});
					}
					{
						salir = new JMenuItem();
						jMenu1.add(salir);
						salir.setText("Salir del Sistema");
						salir.addActionListener(new ActionListener() {
							public void actionPerformed(ActionEvent evt) {
								salirActionPerformed();
							}
						});
						salir.setEnabled(false);
					}
				}
				{
					adminPrestamo = new JMenu();
					Menu.add(adminPrestamo);
					adminPrestamo.setText("Administrar Préstamos");
					{
						ingresarEmp = new JMenuItem();
						adminPrestamo.add(ingresarEmp);
						ingresarEmp.setText("Login");
						ingresarEmp.addActionListener(new ActionListener() {
							public void actionPerformed(ActionEvent evt) {
								ingresarEmpActionPerformed(evt);
							}
						});
						ingresarEmp.setEnabled(true);
					}
					{
						crearPrestamo = new JMenuItem();
						adminPrestamo.add(crearPrestamo);
						crearPrestamo.setText("Crear Prestamo");
						crearPrestamo.addActionListener(new ActionListener() {
							public void actionPerformed(ActionEvent evt) {
								try {
									ventanaPrestamo.setMaximum(true);
								} catch (PropertyVetoException e) {
								}
								ventanaPrestamo.setVisible(true);
								ventanaPrestamo.refresh(-1);
							}
						});
						crearPrestamo.setEnabled(false);
					}
					{
						pagoCuotas = new JMenuItem();
						adminPrestamo.add(pagoCuotas);
						pagoCuotas.setText("Pago de Cuotas");
						pagoCuotas.addActionListener(new ActionListener() {
							public void actionPerformed(ActionEvent evt) {
								try {
									ventanaPagoCuotas.setMaximum(true);
								} catch (PropertyVetoException e) {
								}
								ventanaPagoCuotas.setVisible(true);
								ventanaPagoCuotas.refresh(-1);
							}
						});
						pagoCuotas.setEnabled(false);
					}
					{
						morosos = new JMenuItem();
						adminPrestamo.add(morosos);
						morosos.setText("Clientes Morosos");
						morosos.setEnabled(false);
						morosos.addActionListener(new ActionListener() {
							public void actionPerformed(ActionEvent evt) {
								try {
									ventanaMorosos.setMaximum(true);
								} catch (PropertyVetoException e) {
								}
								ventanaMorosos.setVisible(true);
							}
						});
					}
					{
						desloguear = new JMenuItem();
						adminPrestamo.add(desloguear);
						desloguear.setText("Logout");
						desloguear.setEnabled(false);
						desloguear.addActionListener(new ActionListener() {
							public void actionPerformed(ActionEvent evt) {
								desloguearActionPerformed();
							}
						});
					}
				}
			}
			pack();
			this.setSize(890, 561);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	private void ConectarActionPerformed(ActionEvent evt) {
		try {
			this.ventanaPassword.setMaximum(true);
		} catch (PropertyVetoException e) {
		}
		ocultarVentanas();
		this.jMenu1.setEnabled(false);
		this.adminPrestamo.setEnabled(false);

		ventanaPassword.setVentana(this);
		ventanaPassword.setVisible(true);
	}

	private void ConsultasActionPerformed(ActionEvent evt) {
		try {
			this.ventanaConsulta.setMaximum(true);
		} catch (PropertyVetoException e) {
		}
		ocultarVentanas();
		ventanaConsulta.setVisible(true);
	}

	private void ocultarVentanas() {
		ventanaCajero.setVisible(false);
		ventanaTransferencia1.setVisible(false);
		ventanaExtraer1.setVisible(false);
		ventanaConsulta.setVisible(false);
		ventanaIngresarTarjeta.setVisible(false);
		ventanaLogin.setVisible(false);
		ventanaMorosos.setVisible(false);
		ventanaPagoCuotas.setVisible(false);
		ventanaPassword.setVisible(false);
		ventanaPrestamo.setVisible(false);
	}

	public void habilitar() {
		Conectar.setEnabled(false);
		if (serv.getUsuario().equals((Object) "admin")) {
			Consultas.setEnabled(true);
			Ingresar.setEnabled(true);
			ingresarEmp.setEnabled(true);
		} else if (serv.getUsuario().equals((Object) "atm"))
			Ingresar.setEnabled(true);
		else
			ingresarEmp.setEnabled(true);

		desconectar.setEnabled(true);
	}

	private void IngresarActionPerformed(ActionEvent evt) {
		try {
			this.ventanaIngresarTarjeta.setMaximum(true);
		} catch (PropertyVetoException e) {
		}
		ocultarVentanas();
		serv.conectarBD("atm", "atm");
		this.jMenu2.setEnabled(false);
		this.adminPrestamo.setEnabled(false);
		ventanaIngresarTarjeta.setVentana(this);
		ventanaIngresarTarjeta.setVisible(true);
	}

	private void cajeroAutomaticoActionPerformed(ActionEvent evt) {
		try {
			this.ventanaCajero.setMaximum(true);
		} catch (PropertyVetoException e) {
		}
		ocultarVentanas();
		ventanaCajero.setVisible(true);
		ventanaCajero.refresh();
	}

	private void desconectarActionPerformed(ActionEvent evt) {
		serv.desconectarBD();
		this.jMenu2.setEnabled(true);
		this.adminPrestamo.setEnabled(true);
		deshabilitar();
		this.Ingresar.setEnabled(true);
		this.ingresarEmp.setEnabled(true);
	}

	public void habilitarAtm() {
		Ingresar.setEnabled(false);
		cajeroAutomatico.setEnabled(true);

		menuTransferencia.setEnabled(true);
		extraer.setEnabled(true);

		salir.setEnabled(true);
		try {
			this.ventanaCajero.setMaximum(true);
		} catch (PropertyVetoException e) {
		}
		ocultarVentanas();
		ventanaCajero.setVisible(true);
		ventanaCajero.refresh();
	}

	public void habilitarEmpleado() {
		ingresarEmp.setEnabled(false);
		crearPrestamo.setEnabled(true);
		pagoCuotas.setEnabled(true);
		morosos.setEnabled(true);
		desloguear.setEnabled(true);
	}

	private void deshabilitar() {
		Conectar.setEnabled(true);
		desconectar.setEnabled(false);

		desloguearActionPerformed();
		ingresarEmp.setEnabled(false);

		salirActionPerformed();
		Ingresar.setEnabled(false);

		Consultas.setEnabled(false);
		ventanaConsulta.setVisible(false);

		ventanaIngresarTarjeta.setVisible(false);
		ventanaPassword.setVisible(false);
		ventanaLogin.setVisible(false);

	}

	private void salirActionPerformed() {
		ventanaCajero.setVisible(false);
		cajeroAutomatico.setEnabled(false);
		Ingresar.setEnabled(true);
		salir.setEnabled(false);
		extraer.setEnabled(false);
		menuTransferencia.setEnabled(false);
		serv.desconectarBD();
		this.jMenu2.setEnabled(true);
		this.adminPrestamo.setEnabled(true);
	}

	public void cancelado() {
		jMenu1.setEnabled(true);
		jMenu2.setEnabled(true);
		adminPrestamo.setEnabled(true);
		Conectar.setEnabled(true);
		Ingresar.setEnabled(true);
		ingresarEmp.setEnabled(true);
	}

	private void ingresarEmpActionPerformed(ActionEvent evt) {
		try {
			this.ventanaLogin.setMaximum(true);
		} catch (PropertyVetoException e) {
		}
		ocultarVentanas();
		serv.conectarBD("empleado", "empleado");
		this.jMenu1.setEnabled(false);
		this.jMenu2.setEnabled(false);
		this.ventanaLogin.setVentana(this);
		this.ventanaLogin.setVisible(true);
	}

	private void desloguearActionPerformed() {
		ventanaPrestamo.setVisible(false);
		ventanaMorosos.setVisible(false);
		ventanaPagoCuotas.setVisible(false);
		crearPrestamo.setEnabled(false);
		pagoCuotas.setEnabled(false);
		morosos.setEnabled(false);
		desloguear.setEnabled(false);
		ingresarEmp.setEnabled(true);
		ventanaTransferencia1.setEnabled(false);
		extraer.setEnabled(false);
		menuTransferencia.setEnabled(false);
		this.jMenu1.setEnabled(true);
		this.jMenu2.setEnabled(true);
		serv.desconectarBD();
	}

	private void menuTransferenciaActionPerformed(ActionEvent evt) {

		try {
			this.ventanaTransferencia1.setVisible(true);
			this.ventanaTransferencia1.setMaximum(true);
		} catch (PropertyVetoException e) {
			e.printStackTrace();
		}
		this.ventanaTransferencia1.actualizarDatos();

	}

	private void extraerActionPerformed(ActionEvent evt) {
		try {
			this.ventanaExtraer1.setVisible(true);
			this.ventanaExtraer1.setMaximum(true);
		} catch (PropertyVetoException e) {
			e.printStackTrace();
		}
		this.ventanaExtraer1.actualizarDatos();
	}
}
